package br.gov.ms.tce.cjur.helper;

import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

import br.gov.ms.tce.bean.comum.Usuario;

public class EmailHelper {

	Properties p = new Properties();
	Session s;
	MimeMessage m;
	InternetAddress de;

	
	public EmailHelper() throws AddressException {
		
		p.put("mail.smtp.host", "mail.tce.ms.gov.br");
		p.put("mail.smtp.auth", "true");
		
		Session s = Session.getInstance(p, new AutenticaMail("suporte@tce.ms.gov.br", "Myp2711x"));
		m = new MimeMessage(s);
		de = new InternetAddress("suporte@tce.ms.gov.br");
	}
	
	public void enviar(String destinatario, String assunto, String mensagem) throws AddressException, MessagingException {
		m.setFrom(de);
		InternetAddress para = new InternetAddress(destinatario);
		m.addRecipient(Message.RecipientType.TO, para);
		m.setSubject(assunto);
		m.setText(mensagem);
		
		Transport.send(m);
	}
	
	public static String mensagemRecuperacaoSenha(Usuario usuario) {
		String mensagem = usuario.getPessoaFisica().getNome() + ", você solicitou a recuperação de senha no sistema CJUR no TCE/MS.\n" +
						  "Sua senha foi alterada para: " + usuario.getSenha() + ".\n" +
						  "\n" +
						  "Att.\n" +
						  "Suporte \n" +
						  "TCE/MS";
		return mensagem;
	}

	

	private class AutenticaMail extends Authenticator {
		private String usuario, senha;
		public AutenticaMail(String usuario, String senha) {
			this.usuario = usuario;
			this.senha = senha;
		}
		public PasswordAuthentication getPasswordAuthentication() {
			return new PasswordAuthentication(usuario,senha);
		}
	}



	/**
	 * @param usuario
	 */
	public static String enviarEmailDeRecuperacaoDeSenha(Usuario usuario) {
		br.gov.ms.tce.bean.comum.Email email = null;
		try {
			email = usuario.getPessoaFisica().getEmails().get(0);		
			new EmailHelper().enviar(email.getDescricao(), "Recuperação de Senha do Sistema CJUR - TCE/MS", mensagemRecuperacaoSenha(usuario));
		} catch (Exception e) {
			return "Não foi possível recuperar senha, provavelmente o usuário não possui um email válido. Favor solicitar uma nova senha junto ao Cartório do TCE/MS (67 3317-1417).";
			
		}
		return "Foi enviado uma nova senha para o email "+email.getDescricao()+".";
	}

	
}